
typedef int ElemType;

struct DoublyLinkedNode{
    ElemType node_data;
    struct DoublyLinkedNode *prior_node;
    struct DoublyLinkedNode *next_node;
};
typedef struct DoublyLinkedNode DubLiNode;

struct DoublyLinkedList{
    DubLiNode *list_head;
    unsigned int list_length;
};
typedef struct DoublyLinkedList DubList;


int InitList(DubList *List);
int ListEmpty(DubList List);
int ClearList(DubList *List);
int GetElem(DubList List,unsigned int i,ElemType *e);
int LocateElem(DubList List,ElemType e);
int ListInsert(DubList *List,unsigned int i,ElemType e);
int ListDelete(DubList *List,unsigned int i,ElemType *e);